//
//  SettingsViewController.m
//  WeddingStoreFinder
//
//  Created by Macdev on 11/19/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "SettingsViewController.h"

@interface SettingsViewController()

@property (nonatomic, retain) UpdateHandler *updateHandler;

- (void) update;

@end

@implementation SettingsViewController

@synthesize updateHandler;


- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

- (void) dealloc {
	[updateHandler release];
	[super dealloc];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
 
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
	return YES;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
	switch (section) {
		case 0:
			return 1;
			break;
			
		default:
			break;
	}
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
	
	switch (indexPath.section) {
		case 0:
			switch (indexPath.row) {
				case 0:
					cell.textLabel.text = @"Update";
					break;
					
				default:
					break;
			}
			break;
			
		default:
			break;
	}
	cell.selectionStyle = UITableViewCellSelectionStyleNone;	
    
    // Configure the cell...
    
    return cell;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/

/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/

/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/

/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.section) {
		case 0:
			switch (indexPath.row) {
				case 0:
					[self update];
					break;
					
				default:
					break;
			}
			break;
			
		default:
			break;
	}
}

#pragma mark - Private methods

- (void) update {
	[self showToast:@"Checking for updates..." parentView:self.view];
	UpdateHandler *uh = [[UpdateHandler alloc] init];
	self.updateHandler = uh;
	[uh release];
	updateHandler.delegate = self;
	[updateHandler update];
}

#pragma mark - UpdateHandler delegate

- (void) anErrorOccurred:(UpdateHandler*)_updateHandler {
	[self hideToast];
	UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:_updateHandler.updateResultMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil, nil];
	[errorAlert show];
	[errorAlert release];
}


- (void) updateDone:(UpdateHandler*)_updateHandler {
	[self hideToast];
	[AppConf save];
	UIAlertView *updateDoneAlert = [[UIAlertView alloc] initWithTitle:nil message:_updateHandler.updateResultMessage delegate: nil cancelButtonTitle:@"OK" otherButtonTitles: nil, nil];
	[updateDoneAlert show];
	[updateDoneAlert release];
	self.navigationController.tabBarItem.badgeValue = nil;
}

- (void) updateIsInProgress:(NSString*)textToDisplay {
	if (self.isToastShown) {
		self.HUD.labelText = textToDisplay;
	} else {
		[self showToast:textToDisplay parentView:self.view];
	}
}

@end
